﻿using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.ComponentModel;

namespace Cataloger
{
    [Serializable]
    public class KategoriaDynamiczna:IKategoria
    {
		#region Constructors (1) 

        public KategoriaDynamiczna()
        {

        }

		#endregion Constructors 

		#region Properties (13) 

        public bool DataMod { get; set; }

        public DateTime DataModyfikacjiDo { get; set; }

        public DateTime DataModyfikacjiOd { get; set; }

        public bool DataUtw { get; set; }

        public DateTime DataUtwDo { get; set; }

        public DateTime DataUtwOd { get; set; }

        public string Nazwa { get; set; }
        
        public bool Rozmiar { get; set; }

        public long RozmiarDo { get; set; }

        public long RozmiarOd { get; set; }

        public List<string> Rozszerzenia { get; set; }

        public bool Rozszerzenie { get; set; }

		#endregion Properties 

		#region Methods (2) 

		// Public Methods (1) 

        public override string ToString()
        {
            return Nazwa;
        }
		// Private Methods (1) 

        private void Szukaj(Folder fold, ref List<IObiektCatalogera> obiekty)
        {
            foreach (Plik p in fold.Pliki)
            {
                if (this.Rozszerzenia.Contains(p.Rozszerzenie.ToLower())&&p.Rozmiar>RozmiarOd&&p.Rozmiar<RozmiarDo)
                {
                    obiekty.Add(p);
                }
            }
            foreach (Folder f in fold.Podflodery)
            {
                Szukaj(f,ref obiekty);
            }
        }

		#endregion Methods 
    
        #region IKategoria Members


        public event EventHandler ZmienionoNazwe;

        public List<IObiektCatalogera> ObiektyNalezace()
        {
            List<IObiektCatalogera> obiektyNalezace = new List<IObiektCatalogera>();
            foreach (Katalog cat in Globalne.WczytaneKatalogi)
            {
                foreach (Nosnik n in cat.Nosniki)
                {
                    Szukaj(n.Root, ref obiektyNalezace);
                }
            }
            return obiektyNalezace;
        }

        #endregion
    }
}
